/*************************************************************************
    > File Name: DSA.h
    > Author: ZhaoLulu@BJTU
    > E-mail: 19281121@bjtu.edu.cn
    > Created Time: 2021年12月16日 星期四
 ************************************************************************/
#ifndef INC_19281121_7__DSA_H
#define INC_19281121_7__DSA_H

#include <gmp.h>
#include <ctime>

void global_components(mpz_t &p, mpz_t &q, mpz_t &g);

void private_key(mpz_t q, mpz_t &x);

void public_key(mpz_t g, mpz_t x, mpz_t p, mpz_t &y);

void secret_number(mpz_t q, mpz_t &k);

bool dsa_sign(mpz_t &r, mpz_t &s, mpz_t p, mpz_t q, mpz_t g, mpz_t k, mpz_t x, mpz_t HM);

bool dsa_verify(mpz_t r, mpz_t s, mpz_t p, mpz_t q, mpz_t g, mpz_t y, mpz_t HM);

#endif //INC_19281121_7__DSA_H
